/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package productos.ejbs;

import entities.HistoricoProducto;
import entities.Producto;
import entities.Usuario;
import facades.HistoricoProductoFacade;
import facades.ProductoFacade;
import javax.ejb.Stateless;
import javax.inject.Named;
import javax.enterprise.event.Event;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
import qualifiers.EventoEntidadCreada;
import qualifiers.EventoEntidadEditada;
import qualifiers.UsuarioLogeado;

/**
 *
 * @author damfercer
 */
@Named(value = "historicoProductoBean")
@Stateless
public class HistoricoProductoBean {
    @Inject
    private HistoricoProductoFacade historicoProductoFacade;
    @Inject
    @EventoEntidadCreada
    private Event<HistoricoProducto> eventoNuevoHistoricoProducto; 
    @Inject
    private ProductoFacade productoFacade;
    /**
     * 
     * Creates a new instance of HistoricoProductoBean
     */
    public HistoricoProductoBean() {
    }
    
    public void onNuevoProducto(@Observes @EventoEntidadCreada Producto p, @UsuarioLogeado Usuario u){
        HistoricoProducto historico=new HistoricoProducto();
        historico.setFechaModificacion(p.getUltimaModificacion());
        historico.setHistorico(p.getCadenaHistoricoCrear());
        historico.setProducto(p);
        historico.setUsuario(u);
        historicoProductoFacade.create(historico);
        productoFacade.evict(p, p.getIdProducto());
        eventoNuevoHistoricoProducto.fire(historico);
    }
    
    public void onProductoEditado(@Observes @EventoEntidadEditada Producto p, @UsuarioLogeado Usuario u){
        Producto antiguo=productoFacade.find(p.getIdProducto());
        HistoricoProducto historico=new HistoricoProducto();
        historico.setFechaModificacion(p.getUltimaModificacion());
        historico.setHistorico(p.getCadenaHistorico(antiguo));
        historico.setProducto(p);
        historico.setUsuario(u);
        historicoProductoFacade.create(historico);
        p.getHistoricoProductoList().add(historico);
        productoFacade.evict(p, p.getIdProducto());
        eventoNuevoHistoricoProducto.fire(historico);
    }
}
